package org.springframework.zp.aop.advice;

import lombok.extern.slf4j.Slf4j;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

@Slf4j(topic = "e")
public class BeforeAdvice implements MethodInterceptor {

	/**
	 * 为什么需要传这个对象MethodInvocation
	 *  就是为了 为了执行链上的下一个增强器 ，即责任链设计模式
	 * @param invocation the method invocation joinpoint
	 * @return
	 * @throws Throwable
	 */
	@Override
	public Object invoke(MethodInvocation invocation) throws Throwable {
		//前置操作
		log.debug("+++++++ before 日志输出 +++++++");

		// 调用下一个增强器
		Object obj = invocation.proceed();

		// 后置操作
		log.debug("+++++++ after 日志输出 +++++++");
		return obj;
	}
}
